// components/custom04/custom04.js
Component({
  // 接收父组件传递的数据
  properties: {
    label: String,
  },

  // 组件内部的数据
  data: {
    num: 10,
    count: 100,
    obj: {
      name: "Tom",
      age: 10,
    },
    arr: [1, 2, 3],
  },

  // 监视data和properties中的数据是否的变化
  observers: {
    // 1.基本用法
    // key:需要监听的数据
    // value：回调函数，接收最新的数据
    num: function (newValue) {
      console.log("num发生了变化最新值为" + newValue);
    },
    count: function (newValue) {
      console.log("count发生了变化最新值为" + newValue);
    },
    // 2.同时监听多个数据
    "num , count": function (newNum, newCount) {
      console.log(newNum, newCount);
    },
    // 3.支持监视属性以及内部数据的变化
    "obj.name,arr[1]": function (newName, newArr) {
      console.log(newName, newArr);
    },
    // 4.监视对象中全部属性，使用通配符.**
    "obj.**": function (newValue) {
      console.log("obj中的数据发生了变化", newValue);
    },
    "arr.**": function (newValue) {
      console.log("arr中的数据发生了变化", newValue);
    },
    // 5.监视properites中的数据，会立即执行一次
    label: function (newValue) {
      console.log(newValue);
    },
  },

  // 组件的方法
  methods: {
    // 用于更新数据
    updateData() {
      this.setData({
        num: this.data.num + 1,
        count: this.data.count - 1,
        "obj.name": "李四",
        "arr[1]": 99,
        label: "更新后的标题",
      });
    },
  },
});
